Thực đơn
Sắp xếp trộn Mã giảprocedure mergesort(l,r: integer);var i, j, k, m: integer;begin if r>l then begin m:=(r+l)shr 1; mergesort(l,m); mergesort(m+1,r); for i:= m downto l do b[i]:=a[i]; for j:=m+1 to r do b[r+m+1-j]:=a[j]; for k:=l to r do if b[i] < b[j] then begin a[k]:=b[i]; i:=i+1 end else begin a[k]:=b[j]; j:=j-1 end; end;end;
Procedure Merge(k1,k2,k3:integer); Var i,j,k:integer; T: array[k1..k3] of integer;Begin i:=k1; j:=k2; k:=k3; while i<k2 and j<=k3 do Begin if a[i]<=a[j] then begin T[k]:=a[i]; i:=i+1; End else begin T[k]:=a[j]; j:=j+1; End; k:=k+1; End; if i>=k2 then while k<=k3 do begin T[k]:=a[j]; j:=j+1; k:=k+1; End if j>k3 then while k<k2 do begin T[k]:=a[i]; i:=i+1; k:=k+1; End For k:=k1 to k3 a[k]:=T[k];End
Procedure MergeSortUp (a[1..n]) Var Int m,i { m=1 while m<n { k=0 while k+m<=n { merge(a,k+1,k+m+1,Min[k+2m,n]) k=k+2m } m=2*m } }
Procedure MergeSort (k1,k2) Var k3:integer; Begin if k1<k2 then begin k3:=(k1+k2)/2; MergeSort(k1,k3); MergeSort(k3+1,k2); Merge(k1,k3,k2); End; End;
Ngôn ngữ C++
void merge(int array[], int first, int middle, int last) { int temp[last + 1]; int first1, last1, first2, last2; int index = first; first1 = first; last1 = middle; first2 = middle+1; last2 = last; while((first1 <= last1) && (first2 <= last2)) { if(array[first1] < array[first2]) { temp[index] = array[first1]; index ++; first1 ++; } else { temp[index] = array[first2]; index ++; first2 ++; } } if(first2 > last2) { while(first1 <= last1) { temp[index] = array[first1]; index ++; first1 ++; } } if(first1 > last1) { while(first2 <= last2) { temp[index] = array[first2]; index ++; first2 ++; } } for(int i = first; i <= last; i ++) { array[i] = temp[i - first]; } return;}void mergeSort(int array[], int first, int last) { if(first < last) { int middle = int((first + last) / 2); mergeSort(array, first, middle); mergeSort(array, middle + 1, last); merge(array, first, middle, last); }}
Thực đơn
Sắp xếp trộn Mã giảLiên quan
Tài liệu tham khảo
WikiPedia: Sắp xếp trộn http://www.yorku.ca/sychen/research/sorting/index.... http://www.sorting-algorithms.com/merge-sort http://www.nist.gov/dads/HTML/mergesort.html http://opendatastructures.org/versions/edition-0.1...